原理介绍
Vim是一个类似于Vi的著名的功能强大、高度可定制的文本编辑器。代码补全、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用,是类Unix系统用户最喜欢的文本编辑器。
Vim特点
解放程序员的双手,这一点非常重要,使得程序员在编辑文档时可以不再依赖于鼠标
Vim具有高效率的移动,在行内,文件内可以随意的移动,可以节约大量时间。
Vim具有高效率的输入,可以有很多的插入方式,复制,粘贴,剪切都非常方便。
Vim关系图

Vim应用

进入Vim
在终端中输入vim filename 进入Vim,如果存在该文件则编辑该文件,如果不存在该文件则创建一个新文件并编辑该文件
插入
一般是由命令模式进入插入模式
| 符号 | 说明 |
|---|---|
| a | 在光标所在字符后插入 |
| A | 在光标所在行尾插入 |
| i | 在光标所在字符前插入 |
| I | 在光标所在行首插入 |
| o | 在光标下插入新行 |
| O | 在光标上插入新行 |
光标移动
在命令模式下
| 符号 | 说明 |
|---|---|
| k | 光标向上移动一行 |
| nk | 光标向上移动n行 |
| j | 光标向下移动一行 |
| nj | 光标向下移动n行 |
| h | 光标向左移动一行 |
| nh | 光标向左移动n行 |
| l | 光标向右移动一行 |
| nl | 光标向右移动n行 |
| 符号 | 说明 |
|---|---|
| b | 光标移动到前一个单词的首字母上 |
| nb | 光标移动到前n个单词的首字母上 |
| w | 光标移动到后一个单词的首字母上 |
| nw | 光标移动到后n个单词的首字母上 |
| ge | 光标移动到前一个单词的尾字母上 |
| nge | 光标移动到前n个单词的尾字母上 |
| e | 光标移动到后一个单词的尾字母上 |
| ne | 光标移动到后n个单词的尾字母上 |
| n |
光标移动到后n个字符上 |
| 符号 | 说明 |
|---|---|
| gg | 光标移动到第一行首 |
| G | 光标移动到最后一行首 |
| ngg或nG或:n | 光标移动到第n行首 |
| - | 光标移动到上一行行首 |
| n- | 光标移动到上n行行首 |
| + | 光标移动到下一行行首 |
| n+ | 光标移动到下n行行首 |
| 0 | 光标移动到该行行首 |
| $ | 光标移动到该行行尾 |
| n$ | 光标移动到下n行行尾 |
| ^ | 光标移动到该行首字母 |
| 符号 | 说明 |
|---|---|
| Home | 光标移动到该行行首(可以在插入模式下使用) |
| End | 光标移动到该行行尾(可以在插入模式下使用) |
删除(剪切)字符
在命令模式下
| 符号 | 说明 |
|---|---|
| x | 删除光标所在字符 |
| nx | 删除光标处及后n-1个字符 |
| X | 删除光标前一个字符 |
| nX | 删除光标前n个字符 |
| dd | 删除光标所在行 |
| ndd | 删除光标所在行及后n-1行 |
| dw | 删除光标所在处的单词 |
| dnw | 删除光标所在处及后n-1个单词 |
| dG | 删除光标所在行到文件末尾的所有行 |
| dgg | 删除光标所在行到文件开始的所有行 |
| d/word | 删除从光标所在处到单词word的所有文本 |
| D | 删除光标所在处到该行尾的所有内容 |
| :nd | 删除第n行 |
| :n1,n2d | 删除n1行到n2行 |
复制
在命令模式下
| 符号 | 说明 |
|---|---|
| yy | 复制光标所在行 |
| nyy | 复制光标所在行及后n-1行 |
| yw | 复制光标所在处的单词 |
| ynw | 复制光标所在处及后n-1个单词 |
| yG | 复制光标所在行到文件末尾的所有行 |
| ygg | 复制光标所在行到文件开始的所有行 |
| y/word | 复制从光标所在处到单词word的所有文本 |
| Y | 复制光标所在处到该行尾的所有内容 |
| :ny | 复制第n行 |
| :n1,n2y | 复制n1行到n2行 |
粘贴
在命令模式下
| 符号 | 说明 |
|---|---|
| p | 粘贴在当前光标下 |
| P | 粘贴在当前光标上 |
可视
在命令模式下
| 符号 | 说明 |
|---|---|
| v | 进入可视(选择)模式 |
| d | 删除光标内容 |
| y | 复制光标内容 |
可视
在命令模式下
| 符号 | 说明 |
|---|---|
| v | 进入可视(选择)模式 |
| y | 复制光标内容 |
| d | 剪切光标内容 |
撤回和恢复
在命令模式下
| 符号 | 说明 |
|---|---|
| u | 复原前一次操作 |
| Ctrl + r | 重做上个动作 |
翻页操作
在命令模式下
| 符号 | 说明 |
|---|---|
| Ctrl + f | 屏幕向下移动一页 |
| Ctrl + b | 屏幕向上移动一页 |
| Ctrl + d | 屏幕向下移动半页 |
| Ctrl + u | 屏幕向下移动半页 |
设置行号
在命令模式下
| 符号 | 说明 |
|---|---|
| :set nu | 显示所有的行号 |
| :set nonu | 取消显示行号 |
搜索
在命令模式下
| 符号 | 说明 |
|---|---|
| /word | 向光标之下寻找/word的字符串 |
| ?word | 向光标之上寻找/word的字符串 |
| n | 继续向下查找下一个匹配的字符串 |
| N | 继续向上查找下一个匹配的字符串 |
| :noh | 取消高亮显示 |
| :set ic | 查找忽略大小写 |
| :set noic | 查找不忽略大小写 |
替换
在命令模式下
| 符号 | 说明 |
|---|---|
| r | 取代光标处的字符串 |
| R | 从光标处开始替换字符,Esc结束替换 |
| :n1,n2s/word1/word2/g | 在n1到n2行之间将word1换成word2 |
| :%s/word1/word2/g | 将文档中所有的word1换成word2 |
| :%s/word1/word2/g | 将文档中所有的word1换成word2,取代前询问 |
替换
在命令模式下
| 符号 | 说明 |
|---|---|
| r | 取代光标处的字符串 |
| R | 从光标处开始替换字符,Esc结束替换 |
| :n1,n2s/word1/word2/g | 在n1到n2行之间将word1换成word2 |
| :%s/word1/word2/g | 将文档中所有的word1换成word2 |
| :%s/word1/word2/g | 将文档中所有的word1换成word2,取代前询问 |
| :ab word1 word2 | 文档中以后出现的word1字符自动转换为word2 |
定义快捷键
在命令模式下
:map ctrl+v+字符 命令 可以用来定义快捷键
| 符号 | 说明 |
|---|---|
| :map ctrl+v+p I# |
按ctrl+v+p则会在行首加#注释 |
| :map ctrl+v+H iHello World ! |
按ctrl+v+H会插入Hello World ! |
连续行注释
在命令模式下
| 符号 | 说明 |
|---|---|
| :n1,n2s/^/xxx/g | 在n1到n2行的行首加xxx |
| :n1,n2s/^xxx//g | 将n1到n2行行首的xxx删去 |
| :n1,n2s/^////g | 在n1到n2行的行首加//,/代表/ |
保存和退出
在命令模式下
| 符号 | 说明 |
|---|---|
| :w | 保存修改 |
| :w filename | 另存为filename文件 |
| :Wq或:wq!或ZZ | 保存修改并退出 |
| :q! | 不保存修改并退出 |
Vim小结
Vim作为一款古老的文本编辑器,但是它具有许多有用的功能,使其可以与现代文本编辑器竞争,也是作为Linux系统自带的文本编辑器Vi的升级版,可以完全解放双手,对于程序员来说,Vim是必不可少的技能之一。